//#include<stdio.h>
//  struct ListNode {
//      int val;
//      struct ListNode *next;
//  };
// 
//struct ListNode* removeElements(struct ListNode* head, int val) {
//    struct ListNode* cur = head;
//    struct ListNode* tail = NULL;
//    struct ListNode* phead = NULL;
//    while (cur) {
//        if (cur->val != val) {
//            if (tail == NULL) {
//                tail = phead = cur;
//            }
//            else {
//                tail->next = cur;
//                tail = tail->next;
//            }
//            cur = cur->next;
//        }
//        else {
//            struct ListNode* next = cur->next;
//            free(cur);
//            cur = next;
//        }
//    }
//    if (tail)    tail->next = NULL;
//    return phead;
//}
// 